# -*- coding: utf-8 -*-
"""
Created on Wed Dec 21 15:06:33 2011

@author: Vladimir
"""

from xml.etree import cElementTree as etree
from urllib2 import urlopen

# путь с именем файла, где все имена для проверки в формате FISH1+FISH2
# в 1 колонке, а каждый вид с новой строки
# (path to separated by newline list of species scientific names, which you want
# to check for validity, e.g. "Theragra+chalcogramma\n")
INfile = 'C:/pysyn/listnames.txt'
# путь и имя файла вывода результатов
# (path to file for results)
OUTfile = open('C:/pysyn/CoLanswers.txt', 'w')
# write header with col names
OUTfile.write('sp,stat,url\n')
# базовая часть ссылки для запроса имён в каталоге жизни
baseUrl = "http://www.catalogueoflife.org/col/webservice?name="

def ask_CoL(url):
    tree = etree.parse(urlopen(url))
    el = tree.find('result')
    if el is not None:
       lst = [el.findtext(tag) or '' for tag in "name name_status url".split()]
       return ','.join(lst)
    else:
       return 'NA'


def main():
    # получаем лист имён
    # read into list species names
    names = open(INfile).read().splitlines()

    # пошли по списку получать ответы каталога жизни
    
    for askSp in names:
        url = baseUrl + askSp
        string=ask_CoL(url)
        if string is not 'NA':
            print(str(names.index(askSp)) + ' - done - ' + askSp)
            OUTfile.write(string)
        else:
            print(str(names.index(askSp)) + ' --- NA - ' + askSp)
    OUTfile.close
    
# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
    main()
